A development tool such as, for example, VISUAL STUDIO™ from Microsoft Corp. of Redmond, Wash., enables development of a wide range of computing applications. Such applications may include, for example, web applications, extensible markup language (XML) applications, and traditional client applications. As part of the development process, a user may view, manage, and manipulate a number of objects within the development environment. Such objects may include, for example, forms, controls, components, text strings, and other like elements associated with the development process. The development tool may employ a number of development interfaces that enable the user to interact with such objects.
One such development interface is the designer. Generally, the designer enables the user to add, align, position, view, manage, and manipulate forms and controls. A form is an object that enables the presentation of information to the user and the acceptance of input information from the user. A form may expose properties and methods which define its appearance and behavior, and events which define its interaction with the user. By setting its properties and writing code to respond to its events, a user may customize a form to meet the requirements of an application. A simple way to define a user interface for a form is to place controls on the form's surface.
A control is an object that is contained within a form. A control may be an object such as, for example, a data grid view, a drop down list, a combo-box, a button, or a check-box. Each type of control has its own set of properties, methods, and events that make it suitable for a particular purpose. The designer enables a user to add controls to a form. For example, the designer may enable a control to be added to a form by dragging and dropping the control from a server management console or a logical data source interface such as described in the aforementioned U.S. patent application Ser. No. 10/769,637 entitled “System and Method for Providing a Logical View of a Data Source”. Once a control is added to a form, the designer enables the control to be aligned and positioned within the form.
Another development interface that the enables the user to interact with objects is the development tool code and text editor. Generally, the editor provides a word processing interface that enables a user to efficiently generate, edit, and save source code and text related to application development. The editor may include a language specific service that checks for syntax and usage errors within source code. The editor may be opened directly from a control by, for example, right clicking on the control and selecting a view code option. The source code or text within the editor may include a number of objects.
To better enable the user's interaction with such objects, it is desirable for the development tool to expose and execute an increasing number of developer tasks. The term developer task, as used herein, refers to any task executed in connection with an object or a triggering action performed by the user within a development interface. Such developer tasks may be, for example, data configuration and builder tasks performed in connection with an object. Such developer tasks may also be, for example, tasks which modify a user action with a user specified result. Some exemplary developer tasks are described in the aforementioned U.S. patent application Ser. No. 10,768,525 entitled “System and Method for Generating a Parameterized Query” and U.S. patent application Ser. No. 10/768,526 entitled “System and Method for Exposing a Child List”.
Conventional development tools may employ a combination of user interfaces such as traditional menus, shortcut menus, status bars, and toolbars to expose tasks and commands to the user and alert the user to important information within an application. Traditional menus hold commands, grouped by a common theme. Toolbars use buttons to expose frequently used commands. Context menus “pop up” in response to a right-click of the mouse and hold commonly used commands for a particular area of an application. Often, context menus are assigned to controls, and provide particular commands that relate to the control to which they are assigned. Status bars indicate an application state or provide information about a corresponding entity in the application that has a focus, such as a menu command.
While the user interfaces set forth above serve many purposes, their implementation involves several drawbacks. For example, traditional menus, toolbars, and status bars are generally located around the perimeter of a development interface and, therefore, are not local to an object or screen area in which a triggering action occurs. Thus, to invoke such interfaces in connection with an object, the user is required to, for example, move a screen pointer from an object to the perimeter of a development interface, thereby interrupting the user's actions and thought process.
A context menu may alleviate some of the positioning drawbacks set forth above because the context menu may be displayed adjacent to an object. However, a drawback of the context menu is that its discoverability is limited. Specifically, before being displayed, it must first be requested by the user. Thus, the user may not be aware or may forget that the context menu is available. Additionally, the user must interrupt her action and thought process to request the context menu. Also, because the context menu does not persist with a corresponding object, the user must repeatedly request the context menu every time she wishes to use it. Another drawback of the context menu is that it is limited to text items and does not include, for example, user input fields such as radio buttons, check boxes, and drop down menus which may enable the user to input object properties. Furthermore, the context menu and traditional menus require the user to either select a menu option or close the menu before the user may return to the development interface in which she is working. Thus, even if the user does not wish to immediately invoke a menu item, the user's actions and thought process must be interrupted to close the menu.
Accordingly, there is a need in the art for a “smart” user interface for exposing items including developer tasks and commands, view and modify properties, and ascertain other related information in connection with a corresponding object or triggering action. The user interface may also expose items that are relevant to child objects that are associated with the corresponding object and tool defined tasks that are related to the corresponding object. It is desired that the user interface be functional in a number of development interfaces such as, for example, the designer and the editor. It is further desired that the user interface provide a “rich” display that includes, for example, user input fields such as text edit boxes, check boxes, radio buttons, and drop down menus. It is further desired that the user interface enable direct execution of developer tasks or, alternatively, provide a direct link to other interfaces that facilitate task execution. It is further desired that the user interface provide strong visual attractors in proximity to an object, thereby alerting the user to its availability. It is further desired the user interface expose tasks and information in a non-obtrusive manner without interrupting the actions or the thought process of the user. It is further desired that the user interface function in a manner that is consistent with other interfaces in other computing environments such as, for example, in personal productivity systems, thereby providing a familiar and intuitive experience for the user. It is further desired that the user interface optionally persist with a corresponding object as long as the object is present or the action is applicable in a development interface so that the user need not repeatedly request the user interface. It is further desired that the user interface enable the selection of customized tasks, commands, and information. Other features and advantages of the invention may become apparent from the following detailed description of the invention and accompanying drawings.